草庐IT

GCD ③ dispatch_barrier

全部标签

ios - 如何重复循环 dispatch_after 语句?

我想要一个包含dispatch_after语句的for循环。问题是dispatch_after调用似乎与for循环不一致。换句话说,我希望它仅在dispatch_afterblock中的语句执行后才开始for循环的下一次迭代。我该怎么做?用例我想在屏幕上显示文字。传统上我每秒显示一个单词。但是根据单词的长度,我现在想用更长的时间显示更长的单词,用更少的时间显示更短的单词。我想呈现一个词,稍等片刻(取决于词的长度)然后呈现下一个词,稍等片刻,然后是下一个,等等。 最佳答案 每秒打印一位数字0、1、2、3、4、5、6、7、8、9。dis

ios - 如何在异步 block 内为 dispatch_group_async dispatch_group_wait

我的代码看起来像这样:[SVProgressHUDshow];[imageGeneratorgenerateCGImagesAsynchronouslyForTimes:timescompletionHandler:^(CMTimerequestedTime,...){dispatch_group_async(queueGroup,queue,^{//Dostuff});}];dispatch_group_wait(queueGroup,DISPATCH_TIME_FOREVER);[SVProgressHUDdismiss];基本上,显示加载动画HUD并开始从Assets生成图像缩略

objective-c - 使用 dispatch_get_main_queue() 运行 block 不起作用并挂起应用程序

如果使用函数运行同步块(synchronizedblock):dispatch_sync使用从dispatch_get_main_queue()检索到的队列应用程序挂起并且不执行该block,而如果我通过从以下位置获得的队列:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)它可以正常工作。dispatch_queue_tq;q=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);//q=dispatch_get_main_queue();//If

ios - 分派(dispatch)异步代码错误 - Objective C

我是ObjectiveC的新手,但已经在Swift上工作了一段时间。我假设Objectivec在逻辑上与swift相似。在处理json数据请求时,我必须提供一个警报Controller;所以我不得不使用dispatchasync让它快速工作。这是我在Swift中使用的代码:funcalertMessage(message:String)->Void{letalert=UIAlertController(title:"Alert",message:message,preferredStyle:.Alert)letokAction=UIAlertAction(title:"OK",styl

ios - Grand Central Dispatch 和并发任务

我需要执行三个彼此独立的任务,因此我想同时执行它们。但我需要他们都完成通知另一个对象。AFAIK,*dispatch_apply*创建并发线程,但它迭代一个集合或一个对象数组并执行相同的任务多次循环,我想为每个线程执行不同的任务。是否可以使用GCD做我想做的事?如果不是,最好的方法是什么?谢谢! 最佳答案 使用dispatch_group。ConcurrencyProgrammingGuide举个例子,有moreAPI这也可能对您有所帮助。使用dispatch_group_create创建调度组。使用dispatch_group_a

ios - GCD 和线程

我想了解一些关于GCD和线程的知识。我的ViewController中有一个for循环,它要求我的模型执行一些异步网络请求。因此,如果循环运行5次,模型将发出5个网络请求。考虑到我正在使用NSURLConnection的sendAsyncRequest并且将在另外5个线程上调用完成处理程序这一事实,声明我的模型已经创建了5个线程是否正确?现在,如果我要求我的ViewController在不同的线程上执行这个for循环,并且在循环的每次迭代中,对模型的调用应该依赖于前一次迭代,我是否会创建一个“Inception”线程在这里?基本上,只有在前一个线程完全完成时,我才希望对我的服务器发出后

ios - dispatch_semaphore_wait 不等待信号量

我开发了以下方法,用于检查应用程序与服务器通信的能力。该方法执行一个简单的查询,并且知道如果得到结果,应用程序应该已连接(基本的ping机制)。-(BOOL)isAppConnected{__blockBOOLisConnected=NO;dispatch_semaphore_tsemaphore=dispatch_semaphore_create(0);[[SFRestAPIsharedInstance]performSOQLQuery:@"SELECTidFROMAccountLIMIT1"failBlock:^(NSError*e){isConnected=NO;NSLog(@"

iOS GCD简介(一)

GrandCentralDispatch(GCD)是异步执行任务的计数之一。一般讲应用程序中计数的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的DispatchQueue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率。队列DispatchQueue:执行处理的等待队列,采用FIFO(先进先出)的原则。队列分为两种:串行队列:队列中的任务顺序执行;并行队列:队列中的任务通常会并发执行。这里需要强调下,根据队列的先进先出原则,任务执行完毕了,不一定出队列。只有前面的任务执行完了

ios - 执行 NSURLRequest 和响应委托(delegate)与使用 dispatch_async 有什么区别?

我正在努力解决异步问题;分派(dispatch)、多线程、运行循环等。有什么区别:1)在给定的方法中创建一个NSURLRequest和NSURLConnection,并让它执行并响应委托(delegate)方法(didReceiveResponse、didReceiveData、connectionDidFinishLoading等),以及2)创建一个block并让它dispatch_async?使用第一种方法,我可以访问委托(delegate)方法(我仍然可以访问那些使用分派(dispatch)的方法吗?),并且委托(delegate)方法的执行在触发(或接近触发)时执行。使用blo

iOS GCD 用于 UITableView

我有一个非常密集的UITableView,需要稍微优化一下。问题是,如何使用大中央站有效地做到这一点。每个单元格都有一个带有几个标签和两个图像的UIView。我已经对TableViewCell进行了子类化,并且View正在被重用,尽管当表变大时它仍然有点滞后。我将如何使用GCD来优化表格?或者有更好的解决方法吗?我在线程管理方面不是很擅长,正在寻找一些建议。这是我的表格View的代码:-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{stat